﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace QLBH
{
    public partial class NhanVien : UserControl
    {
        // biến toàn cục
        INV List_Nv = new DNhanVien();
        CNhanVien Nv;
        public NhanVien()
        {
            InitializeComponent();
            load_Infonv();
        }
        #region hàm làm mới
        private void refesh()
        {
            cMaNv.Text = "";
            tTenNV.Text = "";
            dNvl.Value = DateTime.Now;
            tSdn.Text = "";
        }
        #endregion
        #region hàm load thông tin
        private void load_Infonv()
        {
            List_Nv.Load("NhanVien.a");
            //
            load_Gridnv();
        }
        private void load_Gridnv()
        {
            if (List_Nv != null)
            {
                DataTable tb = new DataTable("Nhan vien");
                DataColumn colCodW = new DataColumn("Mã NV");
                DataColumn colNameW = new DataColumn("Tên NV");
                DataColumn colInW = new DataColumn("Ngày VL"); ;
                DataColumn colNPn = new DataColumn("Số DT");
                tb.Columns.Add(colCodW);
                tb.Columns.Add(colNameW);
                tb.Columns.Add(colInW);
                tb.Columns.Add(colNPn);

                foreach (CNhanVien nv in List_Nv)
                {
                    DataRow row = tb.NewRow();
                    row["Mã NV"] = nv.MaNv;
                    row["Tên NV"] = nv.TenNv;
                    row["Ngày VL"] = nv.NgayVl.ToString().Substring(0, 10);
                    row["Số DT"] = nv.Sodtn;
                    //
                    tb.Rows.Add(row);
                }
                dGV_KQnv.DataSource = tb;
            }
        }
        #endregion
        #region thêm
        public void ThemKh()
        {
            Nv = new CNhanVien();
            Nv.MaNv = cMaNv.Text;
            Nv.TenNv = tTenNV.Text;
            Nv.NgayVl = dNvl.Value.Date;
            Nv.Sodtn = tSdn.Text;

            List_Nv.Add(Nv);
            List_Nv.Save("NhanVien.a");
        }
        #endregion
        #region xóa
        private int xoaNv()
        {
            int i;

            if (cMaNv.Text == "")
            {
                MessageBox.Show("Nhập mã số nhân viên cần xóa!", "Thông Báo");
            }
            else if (cMaNv.Text != "")
            {
                for (i = 0; i < List_Nv.Count; i++)
                {
                    if (List_Nv[i].MaNv == cMaNv.Text)
                        return i;
                }
                MessageBox.Show("Không tìm thấy nhân viên cần xóa!", "Thông Báo");
            }
            return -1;
        }
        #endregion
        #region sửa
        private int sua()
        {
            int i;

            if (cMaNv.Text == "")
            {
                MessageBox.Show("Chọn nhân viên cần sửa!", "Thông Báo");
            }
            else
            {
                for (i = 0; i < List_Nv.Count; i++)
                {
                    if (List_Nv[i].MaNv == cMaNv.Text)
                    {
                        return i;
                    }
                }
                MessageBox.Show("Không tìm thấy nhân viên cần sửa!", "Thông Báo");
            }
            return -1;
        }
        #endregion
        #region sự kiện click
        private void bThemnv_Click(object sender, EventArgs e)
        {
            if (cMaNv.Text == "" || tTenNV.Text == "" || tSdn.Text == "")
                MessageBox.Show("Bạn chưa nhập đủ thông tin!", "Thông Báo");
            else
            {
                if (Test())
                {
                    ThemKh();
                    this.load_Gridnv();
                    MessageBox.Show("Thêm thành công!");
                }
            }
        }

        private void bXoanv_Click(object sender, EventArgs e)
        {
            if (xoaNv() != -1)
            {
                List_Nv.RemoveAt(xoaNv());
                List_Nv.Save("NhanVien.a");
                refesh();
                this.load_Gridnv();
                MessageBox.Show("Đã xóa thành công!", "Thông Báo");
            }
        }

        private void bSuanv_Click(object sender, EventArgs e)
        {
            if (sua() != -1)
            {
                int i = sua();
                //update info
                List_Nv[i].TenNv = tTenNV.Text;
                List_Nv[i].NgayVl = dNvl.Value.Date;
                List_Nv[i].Sodtn = tSdn.Text;
                List_Nv.Save("NhanVien.a");
                refesh();
                //
                this.load_Gridnv();
                MessageBox.Show("Đã sửa thông tin thành công!", "Thông Báo");
            }
        }

        private void bLMnv_Click(object sender, EventArgs e)
        {
            refesh();
        }

        private void dGV_KQnv_Click(object sender, EventArgs e)
        {
            if (dGV_KQnv.SelectedRows.Count > 0)
            {
                DataGridViewRow row = dGV_KQnv.SelectedRows[0];
                int vtHang = dGV_KQnv.Rows.IndexOf(row);
                cMaNv.Text = dGV_KQnv[0, vtHang].Value.ToString();
                tTenNV.Text = dGV_KQnv[1, vtHang].Value.ToString();
                dNvl.Text = dGV_KQnv[2, vtHang].Value.ToString();
                tSdn.Text = dGV_KQnv[3, vtHang].Value.ToString();
            }
        }

        private void tSdn_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        #endregion
        #region Kiểm tra mã NV hợp lệ
        private bool Test()
        {
            foreach (CNhanVien Nv in List_Nv)
            {
                if (cMaNv.Text == Nv.MaNv)
                {
                    MessageBox.Show("Đã tồn tại mã nhân viên này!", "Thông Báo", MessageBoxButtons.OK);
                    cMaNv.Text = "";
                    return false;
                }
            }
            return true;
        }
        #endregion
    }
}
